6

本文仅介绍vue-validator的基本用法

使用方法

    1.直接引用在线cdn地址 https://cdn.bootcss.com/vue-validator/3.0.0-alpha.2/vue-validator.js
    2.npm安装 npm install vue-validator

如果是npm安装完之后在入口文件main.js中引入

import Validator from 'vue-validator';
Vue.use(Validator);

文中使用的表单控件基于elementUI

<template>
    <div class="app-container">
        <el-tabs v-model="activeName">
            <el-tab-pane label="表单" name="rulesPane">
                <el-form ref="rulesForm" :rules="formRules" :model="rulesForm" label-width="200px">
                    <el-form-item label="用户名:" prop="userName">
                        <el-input v-model="rulesForm.userName" style="width:300px" maxlength="50"/>
                    </el-form-item>
                    <el-form-item label="身份证号:" prop="idNumber">
                        <el-input v-model="rulesForm.idNumber" style="width:300px" maxlength="50"/>
                    </el-form-item>
                    <el-form-item label="地址:" prop="address">
                        <el-input v-model="rulesForm.address" style="width:300px" maxlength="50"/>
                    </el-form-item>
                    <el-form-item label="手机号:" prop="phoneNumber">
                        <el-input v-model="rulesForm.phoneNumber" style="width:300px" maxlength="50"/>
                    </el-form-item>
                    <el-form-item>
                        <el-button type="primary" @click="onSubmit">保存</el-button>
                        <el-button type="primary" @click="reset">重置</el-button>
                    </el-form-item>
                </el-form>
            </el-tab-pane>
        </el-tabs>
    </div>
</template>

在<el-form ref="rulesForm" :rules="formRules" :model="rulesForm"></el-form>中,ref是被引用时的标识,在验证表单的时候传入此表示,rules是验证规则,需要在data中定义

在<el-form-item label="用户名:" prop="userName"></el-form-item>中,prop对应rules中的规则,在使用 validate、resetFields 方法的情况下,该属性是必填的

在script中定义验证规则和方法

<script>
    const validatorIdNumber = function (rule, value, callback) {
        const reg = /(^\d{15}$)|(^\d{18}$)|(^\d{17}(\d|X|x)$)/
        if(!value) {
            return callback(new Error ('请输入身份证号'))
        }else if(reg.test(value)){
            callback()
        }else {
            return callback(new Error('身份证号格式不正确'))
        }
    }
    const validatorPhoneNumber = function (rule, value, callback) {
        const reg = /^[1][3,4,5,7,8][0-9]{9}$/
        if(!value){
            return callback(new Error('请输入手机号'))
        }else if(reg.test(value)){
            callback()
        }else {
            return callback(new Error('手机号格式不正确'))
        }
    }

    export default{
        data() {
            return {
                rulesForm: {
                    userName:'',
                    address:'',
                    idNumber:'',
                    phoneNumber: ''
                },
                formRules: {
                    userName:[{required: true,message: '请输入用户名',trigger: 'blur'}],
                    idNumber:[{required: true,trigger: 'blur',validator: validatorIdNumber}],
                    address:[{required: true, message: '请输入地址',trigger: 'blur'}],
                    phoneNumber: [{required: true,trigger: 'blur', validator: validatorPhoneNumber}]
                }
            }
        },
        methods:{
            onSubmit () {
                this.$refs['rulesForm'].validate(valid => {
                    console.log(valid)
                    if(valid){
                        alert('成功提交')
                    }else{
                        alert('提交失败')
                        return false
                    }
                })
            },
            reset (){
                this.$refs['rulesForm'].resetFields()
            }
        }
    }
</script>

首先定义验证方法
validatorIdNumber是用来验证身份证号的验证器
validatorPhoneNumber用来验证是否为正确的手机号
'(rule, value, callback) => {}' 为固定格式
方法中定义的常量reg是验证器的正则表达式

接着定义验证规则
验证规则中userName就是在表单中传入的prop,required为是否必填,message为失去焦点后的提示内容,trigger为触发验证的事件类型,validator为验证表单的方法

最后提交表单
this.$refs[ ]获取标识符提交表单验证
this.$refs['rulesForm'].resetFields()此方法可以重置表单

tips
使用resetFields()重置表单时,需要在data内初始化表单


置酒高殿上
24 声望0 粉丝